/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sys.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import sys.bean.StatusBean;
import sys.bean.StatusRomaneioBean;
import sys.utils.ConexaoMySql;

/**
 *
 * @author Administrador
 */
public class StatusRomaneioDao {

    public List<StatusRomaneioBean> statusRomaneio(int idRomaneio) throws SQLException {
        List<StatusRomaneioBean> listStatus = new ArrayList<>();
        Connection con = ConexaoMySql.getConection();

        String sql = "SELECT s.descricao, DATE_FORMAT(sr.`data`, '%d/%m/%Y - %T') AS data \n"
                + "FROM `status` s \n"
                + "INNER JOIN status_romaneio sr ON (sr.id_status = s.id_status) \n"
                + "WHERE sr.id_romaneio = " + idRomaneio;

        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            StatusBean status = new StatusBean();
            StatusRomaneioBean sr = new StatusRomaneioBean();

            sr.setData(rs.getString("data"));

            status.setDescricao(rs.getString("descricao"));
            sr.setStatus(status);

            listStatus.add(sr);
        }

        stmt.close();
        con.close();

        return listStatus;
    }

    /*
     incluindo status de romaneio enviado
     */
    public void statusRomaneioEnviado(StatusRomaneioBean statusRomaneio) throws SQLException {

        Connection con = ConexaoMySql.getConection();
        String sql = "INSERT INTO status_romaneio \n"
                + "(id_romaneio, id_status, data) \n"
                + "VALUES \n"
                + "(?, ?, NOW());";

        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, statusRomaneio.getStatus().getIdStatus());
        stmt.setInt(2, statusRomaneio.getRomaneio().getIdRomaneio());

        stmt.execute();

        stmt.close();
        con.close();
    }

    /*
     utilizado apenas na inclusão do status do romaneio, pois pega o último id
     */
    public void incluir(StatusRomaneioBean statusRomaneio) throws SQLException {

        /*
         Pegando id do ultimo romaneio
         */
        int idRomaneio = RomaneioDao.lastID();

        Connection con = ConexaoMySql.getConection();
        String sql = "INSERT INTO status_romaneio \n"
                + "(id_status, id_romaneio, data) \n"
                + "VALUES \n"
                + "(?, ?, NOW());";

        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, statusRomaneio.getStatus().getIdStatus());
        stmt.setInt(2, idRomaneio);

        stmt.execute();

        stmt.close();
        con.close();
    }
    /*
     utilizado para alterar a hora de carregamento do romaneio
     */

    public void atualizaHoraCarregamento(int idStatus, int idRomaneio) throws SQLException {
        Connection con = ConexaoMySql.getConection();
        String sql = "UPDATE status_romaneio r\n"
                + "SET r.`data` = NOW() \n"
                + "WHERE r.id_status = ? \n"
                + "AND r.id_romaneio = ? ";

        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, idStatus);
        stmt.setInt(2, idRomaneio);

        stmt.execute();

        stmt.close();
        con.close();
    }

}
